package aiku.numericalcontroloa.Model.Entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import lombok.Data;

/**
 * 
 * @TableName employee_profile
 */
@TableName(value ="employee_profile")
@Data
public class EmployeeProfile extends BaseEntity implements Serializable {

    /**
     * 用户id
     */
    private String userId;

    /**
     * 职工编号
     */
    private String employeeNo;

    /**
     * 职工姓名
     */
    private String employeeName;

    /**
     * 职工性别   0:男 1:女
     */
    private Integer employeeSex;

    /**
     * 职工出生日期
     */
    private LocalDate employeeBirthday;

    /**
     * 职工年龄
     */
    private Integer employeeAge;

    /**
     * 职工身份证号
     */
    private String employeeIdcard;

    /**
     * 职工手机号
     */
    private String employeeEmail;

    /**
     * 职工入职日期
     */
    private LocalDate employeeEntryDate;

    /**
     * 职工离职日期
     */
    private LocalDate employeeLeaveDate;

    /**
     * 职工合同到期日期
     */
    private LocalDate employeeContractDate;

    /**
     * 职工合同到期提醒日期
     */
    private LocalDate employeeContractRemindDate;

    /**
     * 职工合同图片
     */
    private String employeeContractFile;

    /**
     * 职工保密协议图片
     */
    private String employeeSecrecyFile;

    /**
     * 职工备注
     */
    private String employeeRemark;

    /**
     * 职工状态  0:在职 1:离职
     */
    private Integer employeeStatus;

    /**
     * 职工修改状态 0:已修改 1:待审核 2:已覆盖
     */
    private Integer employeeUpdateStatus;

    /**
     * 职工修改次数
     */
    private Integer employeeUpdateCount;

    /**
     * 职工修改人
     */
    private String employeeUpdateUser;

    /**
     * 合同到期提醒状态 0:提醒 1:不提醒
     */
//    private Integer employeeContractRemindStatus;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        EmployeeProfile other = (EmployeeProfile) that;
        return (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
            && (this.getEmployeeNo() == null ? other.getEmployeeNo() == null : this.getEmployeeNo().equals(other.getEmployeeNo()))
            && (this.getEmployeeName() == null ? other.getEmployeeName() == null : this.getEmployeeName().equals(other.getEmployeeName()))
            && (this.getEmployeeSex() == null ? other.getEmployeeSex() == null : this.getEmployeeSex().equals(other.getEmployeeSex()))
            && (this.getEmployeeBirthday() == null ? other.getEmployeeBirthday() == null : this.getEmployeeBirthday().equals(other.getEmployeeBirthday()))
            && (this.getEmployeeAge() == null ? other.getEmployeeAge() == null : this.getEmployeeAge().equals(other.getEmployeeAge()))
            && (this.getEmployeeIdcard() == null ? other.getEmployeeIdcard() == null : this.getEmployeeIdcard().equals(other.getEmployeeIdcard()))
            && (this.getEmployeeEmail() == null ? other.getEmployeeEmail() == null : this.getEmployeeEmail().equals(other.getEmployeeEmail()))
            && (this.getEmployeeEntryDate() == null ? other.getEmployeeEntryDate() == null : this.getEmployeeEntryDate().equals(other.getEmployeeEntryDate()))
            && (this.getEmployeeLeaveDate() == null ? other.getEmployeeLeaveDate() == null : this.getEmployeeLeaveDate().equals(other.getEmployeeLeaveDate()))
            && (this.getEmployeeContractDate() == null ? other.getEmployeeContractDate() == null : this.getEmployeeContractDate().equals(other.getEmployeeContractDate()))
            && (this.getEmployeeContractRemindDate() == null ? other.getEmployeeContractRemindDate() == null : this.getEmployeeContractRemindDate().equals(other.getEmployeeContractRemindDate()))
            && (this.getEmployeeContractFile() == null ? other.getEmployeeContractFile() == null : this.getEmployeeContractFile().equals(other.getEmployeeContractFile()))
            && (this.getEmployeeSecrecyFile() == null ? other.getEmployeeSecrecyFile() == null : this.getEmployeeSecrecyFile().equals(other.getEmployeeSecrecyFile()))
            && (this.getEmployeeRemark() == null ? other.getEmployeeRemark() == null : this.getEmployeeRemark().equals(other.getEmployeeRemark()))
            && (this.getEmployeeStatus() == null ? other.getEmployeeStatus() == null : this.getEmployeeStatus().equals(other.getEmployeeStatus()))
            && (this.getEmployeeUpdateStatus() == null ? other.getEmployeeUpdateStatus() == null : this.getEmployeeUpdateStatus().equals(other.getEmployeeUpdateStatus()))
            && (this.getEmployeeUpdateCount() == null ? other.getEmployeeUpdateCount() == null : this.getEmployeeUpdateCount().equals(other.getEmployeeUpdateCount()))
//            && (this.getEmployeeContractRemindStatus() == null ? other.getEmployeeContractRemindStatus() == null : this.getEmployeeContractRemindStatus().equals(other.getEmployeeContractRemindStatus()))
            && (this.getEmployeeUpdateUser() == null ? other.getEmployeeUpdateUser() == null : this.getEmployeeUpdateUser().equals(other.getEmployeeUpdateUser()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
        result = prime * result + ((getEmployeeNo() == null) ? 0 : getEmployeeNo().hashCode());
        result = prime * result + ((getEmployeeName() == null) ? 0 : getEmployeeName().hashCode());
        result = prime * result + ((getEmployeeSex() == null) ? 0 : getEmployeeSex().hashCode());
        result = prime * result + ((getEmployeeBirthday() == null) ? 0 : getEmployeeBirthday().hashCode());
        result = prime * result + ((getEmployeeAge() == null) ? 0 : getEmployeeAge().hashCode());
        result = prime * result + ((getEmployeeIdcard() == null) ? 0 : getEmployeeIdcard().hashCode());
        result = prime * result + ((getEmployeeEmail() == null) ? 0 : getEmployeeEmail().hashCode());
        result = prime * result + ((getEmployeeEntryDate() == null) ? 0 : getEmployeeEntryDate().hashCode());
        result = prime * result + ((getEmployeeLeaveDate() == null) ? 0 : getEmployeeLeaveDate().hashCode());
        result = prime * result + ((getEmployeeContractDate() == null) ? 0 : getEmployeeContractDate().hashCode());
        result = prime * result + ((getEmployeeContractRemindDate() == null) ? 0 : getEmployeeContractRemindDate().hashCode());
        result = prime * result + ((getEmployeeContractFile() == null) ? 0 : getEmployeeContractFile().hashCode());
        result = prime * result + ((getEmployeeSecrecyFile() == null) ? 0 : getEmployeeSecrecyFile().hashCode());
        result = prime * result + ((getEmployeeRemark() == null) ? 0 : getEmployeeRemark().hashCode());
        result = prime * result + ((getEmployeeStatus() == null) ? 0 : getEmployeeStatus().hashCode());
        result = prime * result + ((getEmployeeUpdateStatus() == null) ? 0 : getEmployeeUpdateStatus().hashCode());
        result = prime * result + ((getEmployeeUpdateCount() == null) ? 0 : getEmployeeUpdateCount().hashCode());
        result = prime * result + ((getEmployeeUpdateUser() == null) ? 0 : getEmployeeUpdateUser().hashCode());
//        result = prime * result + ((getEmployeeContractRemindStatus() == null) ? 0 : getEmployeeContractRemindStatus().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", userId=").append(userId);
        sb.append(", employeeNo=").append(employeeNo);
        sb.append(", employeeName=").append(employeeName);
        sb.append(", employeeSex=").append(employeeSex);
        sb.append(", employeeBirthday=").append(employeeBirthday);
        sb.append(", employeeAge=").append(employeeAge);
        sb.append(", employeeIdcard=").append(employeeIdcard);
        sb.append(", employeeEmail=").append(employeeEmail);
        sb.append(", employeeEntryDate=").append(employeeEntryDate);
        sb.append(", employeeLeaveDate=").append(employeeLeaveDate);
        sb.append(", employeeContractDate=").append(employeeContractDate);
        sb.append(", employeeContractRemindDate=").append(employeeContractRemindDate);
        sb.append(", employeeContractFile=").append(employeeContractFile);
        sb.append(", employeeSecrecyFile=").append(employeeSecrecyFile);
        sb.append(", employeeRemark=").append(employeeRemark);
        sb.append(", employeeStatus=").append(employeeStatus);
        sb.append(", employeeUpdateStatus=").append(employeeUpdateStatus);
        sb.append(", employeeUpdateCount=").append(employeeUpdateCount);
        sb.append(", employeeUpdateUser=").append(employeeUpdateUser);
//        sb.append(", employeeContractRemindStatus=").append(employeeContractRemindStatus);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}